package logger

import (
	"gopkg.in/natefinch/lumberjack.v2"
	"io"
	"os"
	"sync"

	"github.com/sirupsen/logrus"
)

var (
	instance *logrus.Logger
	once     sync.Once
)

func GetLogger() *logrus.Logger {
	once.Do(func() {
		instance = logrus.New()
		instance.SetFormatter(&logrus.JSONFormatter{})
		instance.SetLevel(logrus.DebugLevel)

		// 设置日志输出到标准输出（终端）
		instance.SetOutput(os.Stdout)

		// 设置日志输出到文件
		fileHook := &lumberjack.Logger{
			Filename:   "/home/mj/develop/test/goproject/newproxy.log",
			MaxSize:    10,   // 文件最大 MB
			MaxBackups: 3,    // 最多保留 3 个备份文件
			MaxAge:     28,   // 保留 28 天
			Compress:   true, // 是否压缩/归档旧文件
		}

		multiWriter := io.MultiWriter(os.Stdout, fileHook)
		instance.SetOutput(multiWriter)
	})
	return instance
}
